/**
 * 1. 声明语句 declare var 声明 全局变量
 *
 * */

// 如使用 jquery,全局不知道 $代表juqery,则 全局声明

declare var jquery: (selector: string) => any;
jquery('#foo');

// 只是声明类型，无法在声明类型时 实现方法
declare class Person {
  id: number;
  constructor(name: string);
  sayHi(): string;
}

let cat = new Person('tom');
/**
 * 2. 混用 declare 和 export
 *
 * */

declare const nameT: string;
declare function getName(): string;
declare class Animal {
  constructor(n: string);
  sayName(): string;
};



// 与全局变量的声明文件类似，interface 前是不需要 declare 的。
interface Options {
  date: any;
};

// 注：需要使用 declare enum 定义出来，然后使用 export default 导出：
declare enum Dirction {
  Up,
  Left,
  Down,
  Right
};

export { nameT, getName, Animal, Options }


// 注意： export default == import foo from 'foo' 使用等同

/**
 * 3. 导出的文件
 *
 * */